//**********************************************************************
//
// Copyright (c) 2006
// PathEngine
// Lyon, France
//
// All Rights Reserved
//
//**********************************************************************

#include "platform_common/Header.h"
#include "MethodSpecificDecoding.h"
#include "Decoder.h"
#include "common/interface/Assert.h"

void
MethodSpecificDecoding(
        cDecoder& decoder,
        long interfaceIndex, long methodIndex, bool methodEntry
        )
{
    switch(interfaceIndex)
    {
    default:
        invalid();
    case 0:
        decoder.writeInterfaceName("iPathEngine");
        switch(methodIndex)
        {
        case 0:
            {
                decoder.writeMethodName("getVersionAttributes");
                if(methodEntry)
                {
                }
                else
                {
                    decoder.decode_const_char__starconst_star("returnValue");
                }
                break;
            }
        case 1:
            {
                decoder.writeMethodName("getInterfaceMajorVersion");
                if(methodEntry)
                {
                }
                else
                {
                    decoder.decode_long("returnValue");
                }
                break;
            }
        case 2:
            {
                decoder.writeMethodName("getInterfaceMinorVersion");
                if(methodEntry)
                {
                }
                else
                {
                    decoder.decode_long("returnValue");
                }
                break;
            }
        case 3:
            {
                decoder.writeMethodName("getReleaseNumbers");
                if(methodEntry)
                {
                }
                else
                {
                    decoder.decode_long("majorReleaseNumber");
                    decoder.decode_long("minorReleaseNumber");
                    decoder.decode_long("internalReleaseNumber");
                }
                break;
            }
        case 4:
            {
                decoder.writeMethodName("setErrorHandler");
                if(methodEntry)
                {
                }
                else
                {
                }
                break;
            }
        case 5:
            {
                decoder.writeMethodName("getErrorHandler");
                if(methodEntry)
                {
                }
                else
                {
                }
                break;
            }
        case 6:
            {
                decoder.writeMethodName("setPathPoolParameters");
                if(methodEntry)
                {
                    decoder.decode_long("pathsPooled");
                    decoder.decode_long("pointsPerPath");
                }
                else
                {
                }
                break;
            }
        case 7:
            {
                decoder.writeMethodName("shapeIsValid");
                if(methodEntry)
                {
                    decoder.decodeCollisionShape();
                }
                else
                {
                    decoder.decode_bool("returnValue");
                }
                break;
            }
        case 8:
            {
                decoder.writeMethodName("newShape");
                if(methodEntry)
                {
                    decoder.decodeCollisionShape();
                }
                else
                {
                    decoder.decodeAPIObject("returnValue");
                }
                break;
            }
        case 9:
            {
                decoder.writeMethodName("loadMeshFromBuffer");
                if(methodEntry)
                {
                    decoder.decode_const_char_star("format");
                    decoder.decodeDataBuffer();
                    decoder.decode_const_char__starconst_star("options");
                }
                else
                {
                    decoder.decodeAPIObject("returnValue");
                }
                break;
            }
        case 10:
            {
                decoder.writeMethodName("buildMeshFromContent");
                if(methodEntry)
                {
                    decoder.decodeSourceContent();
                    decoder.decode_const_char__starconst_star("options");
                }
                else
                {
                    decoder.decodeAPIObject("returnValue");
                }
                break;
            }
        case 11:
            {
                decoder.writeMethodName("saveContentData");
                if(methodEntry)
                {
                    decoder.decodeSourceContent();
                    decoder.decode_const_char_star("format");
                }
                else
                {
                }
                break;
            }
        case 12:
            {
                decoder.writeMethodName("totalMemoryAllocated");
                if(methodEntry)
                {
                }
                else
                {
                    decoder.decode_unsigned_long("returnValue");
                }
                break;
            }
        case 13:
            {
                decoder.writeMethodName("maximumMemoryAllocated");
                if(methodEntry)
                {
                }
                else
                {
                    decoder.decode_unsigned_long("returnValue");
                }
                break;
            }
        case 14:
            {
                decoder.writeMethodName("resetMaximumMemoryAllocated");
                if(methodEntry)
                {
                }
                else
                {
                }
                break;
            }
        case 15:
            {
                decoder.writeMethodName("setRandomSeed");
                if(methodEntry)
                {
                    decoder.decode_unsigned_long("value");
                }
                else
                {
                }
                break;
            }
        case 16:
            {
                decoder.writeMethodName("collisionPreprocessVersionIsCompatible");
                if(methodEntry)
                {
                    decoder.decodeDataBuffer();
                }
                else
                {
                    decoder.decode_bool("returnValue");
                }
                break;
            }
        case 17:
            {
                decoder.writeMethodName("pathfindPreprocessVersionIsCompatible");
                if(methodEntry)
                {
                    decoder.decodeDataBuffer();
                }
                else
                {
                    decoder.decode_bool("returnValue");
                }
                break;
            }
        case 18:
            {
                decoder.writeMethodName("deleteAllObjects");
                if(methodEntry)
                {
                }
                else
                {
                }
                break;
            }
        case 19:
            {
                decoder.writeMethodName("newContentChunk");
                if(methodEntry)
                {
                    decoder.decode_const_char__starconst_star("attributes");
                }
                else
                {
                    decoder.decodeAPIObject("returnValue");
                }
                break;
            }
        case 20:
            {
                decoder.writeMethodName("loadContentChunk");
                if(methodEntry)
                {
                    decoder.decodeDataBuffer();
                }
                else
                {
                    decoder.decodeAPIObject("returnValue");
                }
                break;
            }
        }
        break;
    case 1:
        decoder.writeInterfaceName("iShape");
        switch(methodIndex)
        {
        case 0:
            {
                decoder.writeMethodName("destroy");
                if(methodEntry)
                {
                }
                else
                {
                }
                break;
            }
        case 1:
            {
                decoder.writeMethodName("size");
                if(methodEntry)
                {
                }
                else
                {
                    decoder.decode_long("returnValue");
                }
                break;
            }
        case 2:
            {
                decoder.writeMethodName("vertex");
                if(methodEntry)
                {
                    decoder.decode_long("index");
                }
                else
                {
                    decoder.decode_long("x");
                    decoder.decode_long("y");
                }
                break;
            }
        }
        break;
    case 2:
        decoder.writeInterfaceName("iMesh");
        switch(methodIndex)
        {
        case 0:
            {
                decoder.writeMethodName("destroy");
                if(methodEntry)
                {
                }
                else
                {
                }
                break;
            }
        case 1:
            {
                decoder.writeMethodName("getNumberOf3DFaces");
                if(methodEntry)
                {
                }
                else
                {
                    decoder.decode_long("returnValue");
                }
                break;
            }
        case 2:
            {
                decoder.writeMethodName("get3DFaceAtPosition");
                if(methodEntry)
                {
                    decoder.decode_cPosition("position");
                }
                else
                {
                    decoder.decode_long("returnValue");
                }
                break;
            }
        case 3:
            {
                decoder.writeMethodName("get3DFaceVertex");
                if(methodEntry)
                {
                    decoder.decode_long("faceIndex");
                    decoder.decode_long("vertexIndexInFace");
                }
                else
                {
                    decoder.decode_long("x");
                    decoder.decode_long("y");
                    decoder.decode_float("z");
                }
                break;
            }
        case 4:
            {
                decoder.writeMethodName("get3DFaceConnection");
                if(methodEntry)
                {
                    decoder.decode_long("faceIndex");
                    decoder.decode_long("edgeIndexInFace");
                }
                else
                {
                    decoder.decode_long("returnValue");
                }
                break;
            }
        case 5:
            {
                decoder.writeMethodName("get3DFaceNormal");
                if(methodEntry)
                {
                    decoder.decode_long("faceIndex");
                }
                else
                {
                    decoder.decode_float("resultX");
                    decoder.decode_float("resultY");
                    decoder.decode_float("resultZ");
                }
                break;
            }
        case 6:
            {
                decoder.writeMethodName("get3DFaceAttribute");
                if(methodEntry)
                {
                    decoder.decode_long("faceIndex");
                    decoder.decode_long("attributeIndex");
                }
                else
                {
                    decoder.decode_long("returnValue");
                }
                break;
            }
        case 7:
            {
                decoder.writeMethodName("getNumberOfSections");
                if(methodEntry)
                {
                }
                else
                {
                    decoder.decode_long("returnValue");
                }
                break;
            }
        case 8:
            {
                decoder.writeMethodName("getSurfaceType");
                if(methodEntry)
                {
                    decoder.decode_cPosition("position");
                }
                else
                {
                    decoder.decode_long("returnValue");
                }
                break;
            }
        case 9:
            {
                decoder.writeMethodName("getSectionID");
                if(methodEntry)
                {
                    decoder.decode_cPosition("position");
                }
                else
                {
                    decoder.decode_long("returnValue");
                }
                break;
            }
        case 10:
            {
                decoder.writeMethodName("storeAnchor");
                if(methodEntry)
                {
                    decoder.decode_const_char_star("id");
                    decoder.decode_cPosition("position");
                    decoder.decode_long("orientation");
                }
                else
                {
                }
                break;
            }
        case 11:
            {
                decoder.writeMethodName("retrieveAnchor");
                if(methodEntry)
                {
                    decoder.decode_const_char_star("id");
                }
                else
                {
                    decoder.decode_long("orientation");
                    decoder.decode_cPosition("returnValue");
                }
                break;
            }
        case 12:
            {
                decoder.writeMethodName("getNumberOfAnchors");
                if(methodEntry)
                {
                }
                else
                {
                    decoder.decode_long("returnValue");
                }
                break;
            }
        case 13:
            {
                decoder.writeMethodName("retrieveAnchorByIndex");
                if(methodEntry)
                {
                    decoder.decode_long("index");
                }
                else
                {
                    decoder.decode_cPosition("position");
                    decoder.decode_long("orientation");
                    decoder.decode_const_char_star("id");
                }
                break;
            }
        case 14:
            {
                decoder.writeMethodName("storeNamedObstacle");
                if(methodEntry)
                {
                    decoder.decode_const_char_star("id");
                    decoder.decodeAPIObject("agent");
                }
                else
                {
                }
                break;
            }
        case 15:
            {
                decoder.writeMethodName("retrieveNamedObstacle");
                if(methodEntry)
                {
                    decoder.decode_const_char_star("id");
                }
                else
                {
                    decoder.decodeAPIObject("returnValue");
                }
                break;
            }
        case 16:
            {
                decoder.writeMethodName("getNumberOfNamedObstacles");
                if(methodEntry)
                {
                }
                else
                {
                    decoder.decode_long("returnValue");
                }
                break;
            }
        case 17:
            {
                decoder.writeMethodName("retrieveNamedObstacleByIndex");
                if(methodEntry)
                {
                    decoder.decode_long("index");
                }
                else
                {
                    decoder.decodeAPIObject("agent");
                    decoder.decode_const_char_star("id");
                }
                break;
            }
        case 18:
            {
                decoder.writeMethodName("positionFor3DPoint");
                if(methodEntry)
                {
                    decoder.decode_const_long_star("point");
                }
                else
                {
                    decoder.decode_cPosition("returnValue");
                }
                break;
            }
        case 19:
            {
                decoder.writeMethodName("positionFor3DPointF");
                if(methodEntry)
                {
                    decoder.decode_const_float_star("point");
                }
                else
                {
                    decoder.decode_cPosition("returnValue");
                }
                break;
            }
        case 20:
            {
                decoder.writeMethodName("positionNear3DPoint");
                if(methodEntry)
                {
                    decoder.decode_const_long_star("point");
                    decoder.decode_long("horizontalRange");
                    decoder.decode_long("verticalRange");
                }
                else
                {
                    decoder.decode_cPosition("returnValue");
                }
                break;
            }
        case 21:
            {
                decoder.writeMethodName("positionInSection");
                if(methodEntry)
                {
                    decoder.decode_long("sectionID");
                    decoder.decode_long("x");
                    decoder.decode_long("y");
                }
                else
                {
                    decoder.decode_cPosition("returnValue");
                }
                break;
            }
        case 22:
            {
                decoder.writeMethodName("positionInSectionFor3DPoint");
                if(methodEntry)
                {
                    decoder.decode_long("sectionID");
                    decoder.decode_const_long_star("point");
                }
                else
                {
                    decoder.decode_cPosition("returnValue");
                }
                break;
            }
        case 23:
            {
                decoder.writeMethodName("positionInSectionFor3DPointF");
                if(methodEntry)
                {
                    decoder.decode_long("sectionID");
                    decoder.decode_const_float_star("point");
                }
                else
                {
                    decoder.decode_cPosition("returnValue");
                }
                break;
            }
        case 24:
            {
                decoder.writeMethodName("positionInSectionNear3DPoint");
                if(methodEntry)
                {
                    decoder.decode_long("sectionID");
                    decoder.decode_const_long_star("point");
                    decoder.decode_long("horizontalRange");
                    decoder.decode_long("verticalRange");
                }
                else
                {
                    decoder.decode_cPosition("returnValue");
                }
                break;
            }
        case 25:
            {
                decoder.writeMethodName("generateRandomPosition");
                if(methodEntry)
                {
                }
                else
                {
                    decoder.decode_cPosition("returnValue");
                }
                break;
            }
        case 26:
            {
                decoder.writeMethodName("generateRandomPositionLocally");
                if(methodEntry)
                {
                    decoder.decode_cPosition("centre");
                    decoder.decode_long("range");
                }
                else
                {
                    decoder.decode_cPosition("returnValue");
                }
                break;
            }
        case 27:
            {
                decoder.writeMethodName("generateRandomPositionInSection");
                if(methodEntry)
                {
                    decoder.decode_long("sectionID");
                }
                else
                {
                    decoder.decode_cPosition("returnValue");
                }
                break;
            }
        case 28:
            {
                decoder.writeMethodName("heightAtPosition");
                if(methodEntry)
                {
                    decoder.decode_cPosition("position");
                }
                else
                {
                    decoder.decode_long("returnValue");
                }
                break;
            }
        case 29:
            {
                decoder.writeMethodName("heightAtPositionF");
                if(methodEntry)
                {
                    decoder.decode_cPosition("position");
                }
                else
                {
                    decoder.decode_float("returnValue");
                }
                break;
            }
        case 30:
            {
                decoder.writeMethodName("heightAtPositionWithPrecision");
                if(methodEntry)
                {
                    decoder.decode_cPosition("position");
                    decoder.decode_float("precisionX");
                    decoder.decode_float("precisionY");
                }
                else
                {
                    decoder.decode_float("returnValue");
                }
                break;
            }
        case 31:
            {
                decoder.writeMethodName("getCellForEndOfLine");
                if(methodEntry)
                {
                    decoder.decode_cPosition("start");
                    decoder.decode_long("endX");
                    decoder.decode_long("endY");
                }
                else
                {
                    decoder.decode_long("returnValue");
                }
                break;
            }
        case 32:
            {
                decoder.writeMethodName("positionIsValid");
                if(methodEntry)
                {
                    decoder.decode_cPosition("p");
                }
                else
                {
                    decoder.decode_bool("returnValue");
                }
                break;
            }
        case 33:
            {
                decoder.writeMethodName("burnContextIntoMesh");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("context");
                }
                else
                {
                }
                break;
            }
        case 34:
            {
                decoder.writeMethodName("saveGround");
                if(methodEntry)
                {
                    decoder.decode_const_char_star("format");
                    decoder.decode_bool("includeMapping");
                }
                else
                {
                }
                break;
            }
        case 35:
            {
                decoder.writeMethodName("setTerrainCallBack");
                if(methodEntry)
                {
                    decoder.decode_long("terrainLayer");
                    decoder.decodeClassCallBack("callBack");
                }
                else
                {
                }
                break;
            }
        case 36:
            {
                decoder.writeMethodName("addEndPoint");
                if(methodEntry)
                {
                    decoder.decode_cPosition("position");
                }
                else
                {
                    decoder.decode_long("returnValue");
                }
                break;
            }
        case 37:
            {
                decoder.writeMethodName("addOffMeshConnection");
                if(methodEntry)
                {
                    decoder.decode_long("fromEndPoint");
                    decoder.decode_long("toEndPoint");
                    decoder.decode_long("penalty");
                }
                else
                {
                    decoder.decode_long("returnValue");
                }
                break;
            }
        case 38:
            {
                decoder.writeMethodName("getNumberOfEndPoints");
                if(methodEntry)
                {
                }
                else
                {
                    decoder.decode_long("returnValue");
                }
                break;
            }
        case 39:
            {
                decoder.writeMethodName("getEndPoint");
                if(methodEntry)
                {
                    decoder.decode_long("index");
                }
                else
                {
                    decoder.decode_cPosition("returnValue");
                }
                break;
            }
        case 40:
            {
                decoder.writeMethodName("getNumberOfOffMeshConnections");
                if(methodEntry)
                {
                }
                else
                {
                    decoder.decode_long("returnValue");
                }
                break;
            }
        case 41:
            {
                decoder.writeMethodName("getOffMeshConnectionInfo");
                if(methodEntry)
                {
                    decoder.decode_long("index");
                }
                else
                {
                    decoder.decode_long("fromEndPoint");
                    decoder.decode_long("toEndPoint");
                    decoder.decode_long("penalty");
                }
                break;
            }
        case 42:
            {
                decoder.writeMethodName("clearOffMeshConnectionsAndEndPoints");
                if(methodEntry)
                {
                }
                else
                {
                }
                break;
            }
        case 43:
            {
                decoder.writeMethodName("generateCollisionPreprocessFor");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("shape");
                    decoder.decode_const_char__starconst_star("attributes");
                }
                else
                {
                }
                break;
            }
        case 44:
            {
                decoder.writeMethodName("generatePathfindPreprocessFor");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("shape");
                    decoder.decode_const_char__starconst_star("attributes");
                }
                else
                {
                }
                break;
            }
        case 45:
            {
                decoder.writeMethodName("releaseAllPreprocessFor");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("shape");
                }
                else
                {
                }
                break;
            }
        case 46:
            {
                decoder.writeMethodName("releasePathfindPreprocessFor");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("shape");
                }
                else
                {
                }
                break;
            }
        case 47:
            {
                decoder.writeMethodName("preprocessGenerationCompleted");
                if(methodEntry)
                {
                }
                else
                {
                }
                break;
            }
        case 48:
            {
                decoder.writeMethodName("shapeCanCollide");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("shape");
                }
                else
                {
                    decoder.decode_bool("returnValue");
                }
                break;
            }
        case 49:
            {
                decoder.writeMethodName("shapeCanPathfind");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("shape");
                }
                else
                {
                    decoder.decode_bool("returnValue");
                }
                break;
            }
        case 50:
            {
                decoder.writeMethodName("getCollisionPreprocessAttributes");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("shape");
                }
                else
                {
                    decoder.decode_const_char__starconst_star("returnValue");
                }
                break;
            }
        case 51:
            {
                decoder.writeMethodName("getPathfindPreprocessAttributes");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("shape");
                }
                else
                {
                    decoder.decode_const_char__starconst_star("returnValue");
                }
                break;
            }
        case 52:
            {
                decoder.writeMethodName("saveCollisionPreprocessFor");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("shape");
                }
                else
                {
                }
                break;
            }
        case 53:
            {
                decoder.writeMethodName("savePathfindPreprocessFor");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("shape");
                }
                else
                {
                }
                break;
            }
        case 54:
            {
                decoder.writeMethodName("loadCollisionPreprocessFor");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("shape");
                    decoder.decodeDataBuffer();
                }
                else
                {
                }
                break;
            }
        case 55:
            {
                decoder.writeMethodName("loadPathfindPreprocessFor");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("shape");
                    decoder.decodeDataBuffer();
                }
                else
                {
                }
                break;
            }
        case 56:
            {
                decoder.writeMethodName("placeAgent");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("shape");
                    decoder.decode_cPosition("position");
                }
                else
                {
                    decoder.decodeAPIObject("returnValue");
                }
                break;
            }
        case 57:
            {
                decoder.writeMethodName("newContext");
                if(methodEntry)
                {
                }
                else
                {
                    decoder.decodeAPIObject("returnValue");
                }
                break;
            }
        case 58:
            {
                decoder.writeMethodName("newObstacleSet");
                if(methodEntry)
                {
                }
                else
                {
                    decoder.decodeAPIObject("returnValue");
                }
                break;
            }
        case 59:
            {
                decoder.writeMethodName("testPointCollision");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("shape");
                    decoder.decodeAPIObject("context");
                    decoder.decode_cPosition("position");
                }
                else
                {
                    decoder.decode_bool("returnValue");
                }
                break;
            }
        case 60:
            {
                decoder.writeMethodName("testLineCollision");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("shape");
                    decoder.decodeAPIObject("context");
                    decoder.decode_cPosition("start");
                    decoder.decode_cPosition("end");
                }
                else
                {
                    decoder.decode_bool("returnValue");
                }
                break;
            }
        case 61:
            {
                decoder.writeMethodName("testLineCollision_XY");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("shape");
                    decoder.decodeAPIObject("context");
                    decoder.decode_cPosition("start");
                    decoder.decode_long("x");
                    decoder.decode_long("y");
                }
                else
                {
                    decoder.decode_long("cell");
                    decoder.decode_bool("returnValue");
                }
                break;
            }
        case 62:
            {
                decoder.writeMethodName("firstCollision");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("shape");
                    decoder.decodeAPIObject("context");
                    decoder.decode_cPosition("start");
                    decoder.decode_long("x");
                    decoder.decode_long("y");
                }
                else
                {
                    decoder.decode_long("cell");
                    decoder.decodeAPIObject("returnValue");
                }
                break;
            }
        case 63:
            {
                decoder.writeMethodName("findClosestUnobstructedPosition");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("shape");
                    decoder.decodeAPIObject("context");
                    decoder.decode_cPosition("position");
                    decoder.decode_long("maximumDistance");
                }
                else
                {
                    decoder.decode_cPosition("returnValue");
                }
                break;
            }
        case 64:
            {
                decoder.writeMethodName("getAllAgentsOverlapped");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("shape");
                    decoder.decodeAPIObject("context");
                    decoder.decode_cPosition("position");
                }
                else
                {
                    decoder.decodeAgentVector();
                }
                break;
            }
        case 65:
            {
                decoder.writeMethodName("findShortestPath");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("shape");
                    decoder.decodeAPIObject("context");
                    decoder.decode_cPosition("start");
                    decoder.decode_cPosition("goal");
                }
                else
                {
                    decoder.decodeAPIObject("returnValue");
                }
                break;
            }
        case 66:
            {
                decoder.writeMethodName("findShortestPath_WithQueryCallBack");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("shape");
                    decoder.decodeAPIObject("context");
                    decoder.decode_cPosition("start");
                    decoder.decode_cPosition("goal");
                    decoder.decodeCallBack("queryCallBack");
                }
                else
                {
                    decoder.decodeAPIObject("returnValue");
                }
                break;
            }
        case 67:
            {
                decoder.writeMethodName("findPathAway");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("shape");
                    decoder.decodeAPIObject("context");
                    decoder.decode_cPosition("start");
                    decoder.decode_cPosition("awayFrom");
                    decoder.decode_long("distanceAway");
                }
                else
                {
                    decoder.decodeAPIObject("returnValue");
                }
                break;
            }
        case 68:
            {
                decoder.writeMethodName("findPathAway_WithQueryCallBack");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("shape");
                    decoder.decodeAPIObject("context");
                    decoder.decode_cPosition("start");
                    decoder.decode_cPosition("awayFrom");
                    decoder.decode_long("distanceAway");
                    decoder.decodeCallBack("queryCallBack");
                }
                else
                {
                    decoder.decodeAPIObject("returnValue");
                }
                break;
            }
        case 69:
            {
                decoder.writeMethodName("generateCurvedPath");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("shape");
                    decoder.decodeAPIObject("basePath");
                    decoder.decodeAPIObject("context");
                    decoder.decode_long("startVectorX");
                    decoder.decode_long("startVectorY");
                    decoder.decode_long("sectionLength");
                    decoder.decode_float("turnRatio1");
                    decoder.decode_float("turnRatio2");
                }
                else
                {
                    decoder.decodeAPIObject("returnValue");
                }
                break;
            }
        case 70:
            {
                decoder.writeMethodName("constructPath");
                if(methodEntry)
                {
                    decoder.decodePathBuffers();
                }
                else
                {
                    decoder.decodeAPIObject("returnValue");
                }
                break;
            }
        case 71:
            {
                decoder.writeMethodName("constructPath_Reversed");
                if(methodEntry)
                {
                    decoder.decodePathBuffers();
                }
                else
                {
                    decoder.decodeAPIObject("returnValue");
                }
                break;
            }
        case 72:
            {
                decoder.writeMethodName("savePath");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("path");
                }
                else
                {
                }
                break;
            }
        case 73:
            {
                decoder.writeMethodName("loadPath");
                if(methodEntry)
                {
                    decoder.decodeDataBuffer();
                }
                else
                {
                    decoder.decodeAPIObject("returnValue");
                }
                break;
            }
        case 74:
            {
                decoder.writeMethodName("renderLineOnGround");
                if(methodEntry)
                {
                    decoder.decode_cPosition("start");
                    decoder.decode_long("endX");
                    decoder.decode_long("endY");
                    decoder.decode_long("originX");
                    decoder.decode_long("originY");
                }
                else
                {
                }
                break;
            }
        case 75:
            {
                decoder.writeMethodName("newObstacleSet_WithAttributes");
                if(methodEntry)
                {
                    decoder.decode_const_char__starconst_star("attributes");
                }
                else
                {
                    decoder.decodeAPIObject("returnValue");
                }
                break;
            }
        case 76:
            {
                decoder.writeMethodName("positionInSectionInShape");
                if(methodEntry)
                {
                    decoder.decode_long("sectionID");
                    decoder.decode_long("shapeOriginX");
                    decoder.decode_long("shapeOriginY");
                    decoder.decodeCollisionShape();
                }
                else
                {
                    decoder.decode_cPosition("returnValue");
                }
                break;
            }
        }
        break;
    case 3:
        decoder.writeInterfaceName("iAgent");
        switch(methodIndex)
        {
        case 0:
            {
                decoder.writeMethodName("destroy");
                if(methodEntry)
                {
                }
                else
                {
                }
                break;
            }
        case 1:
            {
                decoder.writeMethodName("getMesh");
                if(methodEntry)
                {
                }
                else
                {
                    decoder.decodeAPIObject("returnValue");
                }
                break;
            }
        case 2:
            {
                decoder.writeMethodName("getShape");
                if(methodEntry)
                {
                }
                else
                {
                    decoder.decodeAPIObject("returnValue");
                }
                break;
            }
        case 3:
            {
                decoder.writeMethodName("setUserData");
                if(methodEntry)
                {
                    decoder.decode_void_star("voidPointer");
                }
                else
                {
                }
                break;
            }
        case 4:
            {
                decoder.writeMethodName("getUserData");
                if(methodEntry)
                {
                }
                else
                {
                    decoder.decode_void_star("returnValue");
                }
                break;
            }
        case 5:
            {
                decoder.writeMethodName("getPosition");
                if(methodEntry)
                {
                }
                else
                {
                    decoder.decode_cPosition("returnValue");
                }
                break;
            }
        case 6:
            {
                decoder.writeMethodName("moveTo");
                if(methodEntry)
                {
                    decoder.decode_cPosition("newPosition");
                }
                else
                {
                }
                break;
            }
        case 7:
            {
                decoder.writeMethodName("canCollide");
                if(methodEntry)
                {
                }
                else
                {
                    decoder.decode_bool("returnValue");
                }
                break;
            }
        case 8:
            {
                decoder.writeMethodName("canPathfind");
                if(methodEntry)
                {
                }
                else
                {
                    decoder.decode_bool("returnValue");
                }
                break;
            }
        case 9:
            {
                decoder.writeMethodName("testCollisionAt");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("context");
                    decoder.decode_cPosition("newPosition");
                }
                else
                {
                    decoder.decode_bool("returnValue");
                }
                break;
            }
        case 10:
            {
                decoder.writeMethodName("testCollisionTo");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("context");
                    decoder.decode_cPosition("newPosition");
                }
                else
                {
                    decoder.decode_bool("returnValue");
                }
                break;
            }
        case 11:
            {
                decoder.writeMethodName("testCollisionTo_XY");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("context");
                    decoder.decode_long("x");
                    decoder.decode_long("y");
                }
                else
                {
                    decoder.decode_long("cell");
                    decoder.decode_bool("returnValue");
                }
                break;
            }
        case 12:
            {
                decoder.writeMethodName("firstCollisionTo");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("context");
                    decoder.decode_long("x");
                    decoder.decode_long("y");
                }
                else
                {
                    decoder.decode_long("cell");
                    decoder.decodeAPIObject("returnValue");
                }
                break;
            }
        case 13:
            {
                decoder.writeMethodName("findClosestUnobstructedPosition");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("context");
                    decoder.decode_long("maximumDistance");
                }
                else
                {
                    decoder.decode_cPosition("returnValue");
                }
                break;
            }
        case 14:
            {
                decoder.writeMethodName("getAllAgentsOverlapped");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("context");
                }
                else
                {
                    decoder.decodeAgentVector();
                }
                break;
            }
        case 15:
            {
                decoder.writeMethodName("testCollisionDirectlyAgainstPlacedShape");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("shape");
                    decoder.decode_cPosition("shapePosition");
                }
                else
                {
                    decoder.decode_bool("returnValue");
                }
                break;
            }
        case 16:
            {
                decoder.writeMethodName("findShortestPathTo");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("context");
                    decoder.decode_cPosition("target");
                }
                else
                {
                    decoder.decodeAPIObject("returnValue");
                }
                break;
            }
        case 17:
            {
                decoder.writeMethodName("findShortestPathTo_WithQueryCallBack");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("context");
                    decoder.decode_cPosition("target");
                    decoder.decodeCallBack("queryCallBack");
                }
                else
                {
                    decoder.decodeAPIObject("returnValue");
                }
                break;
            }
        case 18:
            {
                decoder.writeMethodName("findPathAway");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("context");
                    decoder.decode_cPosition("awayFrom");
                    decoder.decode_long("distanceAway");
                }
                else
                {
                    decoder.decodeAPIObject("returnValue");
                }
                break;
            }
        case 19:
            {
                decoder.writeMethodName("findPathAway_WithQueryCallBack");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("context");
                    decoder.decode_cPosition("awayFrom");
                    decoder.decode_long("distanceAway");
                    decoder.decodeCallBack("queryCallBack");
                }
                else
                {
                    decoder.decodeAPIObject("returnValue");
                }
                break;
            }
        case 20:
            {
                decoder.writeMethodName("advanceAlongPath");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("path");
                    decoder.decode_float("distance");
                    decoder.decodeAPIObject("context");
                }
                else
                {
                    decoder.decodeAPIObject("returnValue");
                }
                break;
            }
        case 21:
            {
                decoder.writeMethodName("advanceAlongPathWithPrecision");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("path");
                    decoder.decode_float("distance");
                    decoder.decodeAPIObject("context");
                }
                else
                {
                    decoder.decode_float("precisionX");
                    decoder.decode_float("precisionY");
                    decoder.decodeAPIObject("returnValue");
                }
                break;
            }
        case 22:
            {
                decoder.writeMethodName("generateCurvedPath");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("basePath");
                    decoder.decodeAPIObject("context");
                    decoder.decode_long("startVectorX");
                    decoder.decode_long("startVectorY");
                    decoder.decode_long("sectionLength");
                    decoder.decode_float("turnRatio1");
                    decoder.decode_float("turnRatio2");
                }
                else
                {
                    decoder.decodeAPIObject("returnValue");
                }
                break;
            }
        case 23:
            {
                decoder.writeMethodName("setTraverseCost");
                if(methodEntry)
                {
                    decoder.decode_float("cost");
                }
                else
                {
                }
                break;
            }
        case 24:
            {
                decoder.writeMethodName("setTraverseCostDirection");
                if(methodEntry)
                {
                    decoder.decode_long("directionVectorX");
                    decoder.decode_long("directionVectorY");
                }
                else
                {
                }
                break;
            }
        case 25:
            {
                decoder.writeMethodName("getTraverseCost");
                if(methodEntry)
                {
                }
                else
                {
                    decoder.decode_float("returnValue");
                }
                break;
            }
        case 26:
            {
                decoder.writeMethodName("getTraverseCostDirection");
                if(methodEntry)
                {
                }
                else
                {
                    decoder.decode_long("directionVectorX");
                    decoder.decode_long("directionVectorY");
                }
                break;
            }
        }
        break;
    case 4:
        decoder.writeInterfaceName("iCollisionContext");
        switch(methodIndex)
        {
        case 0:
            {
                decoder.writeMethodName("destroy");
                if(methodEntry)
                {
                }
                else
                {
                }
                break;
            }
        case 1:
            {
                decoder.writeMethodName("addAgent");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("agent");
                }
                else
                {
                }
                break;
            }
        case 2:
            {
                decoder.writeMethodName("removeAgent");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("agent");
                }
                else
                {
                }
                break;
            }
        case 3:
            {
                decoder.writeMethodName("getNumberOfAgents");
                if(methodEntry)
                {
                }
                else
                {
                    decoder.decode_long("returnValue");
                }
                break;
            }
        case 4:
            {
                decoder.writeMethodName("getAgent");
                if(methodEntry)
                {
                    decoder.decode_long("index");
                }
                else
                {
                    decoder.decodeAPIObject("returnValue");
                }
                break;
            }
        case 5:
            {
                decoder.writeMethodName("includes");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("agent");
                }
                else
                {
                    decoder.decode_bool("returnValue");
                }
                break;
            }
        case 6:
            {
                decoder.writeMethodName("addObstacleSet");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("context");
                }
                else
                {
                }
                break;
            }
        case 7:
            {
                decoder.writeMethodName("removeObstacleSet");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("context");
                }
                else
                {
                }
                break;
            }
        case 8:
            {
                decoder.writeMethodName("getNumberOfObstacleSets");
                if(methodEntry)
                {
                }
                else
                {
                    decoder.decode_long("returnValue");
                }
                break;
            }
        case 9:
            {
                decoder.writeMethodName("getObstacleSet");
                if(methodEntry)
                {
                    decoder.decode_long("index");
                }
                else
                {
                    decoder.decodeAPIObject("returnValue");
                }
                break;
            }
        case 10:
            {
                decoder.writeMethodName("updateCollisionPreprocessFor");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("shape");
                }
                else
                {
                }
                break;
            }
        case 11:
            {
                decoder.writeMethodName("updatePathfindingPreprocessFor");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("shape");
                }
                else
                {
                }
                break;
            }
        case 12:
            {
                decoder.writeMethodName("setSurfaceTypeTraverseCost");
                if(methodEntry)
                {
                    decoder.decode_long("surfaceType");
                    decoder.decode_float("cost");
                }
                else
                {
                }
                break;
            }
        case 13:
            {
                decoder.writeMethodName("setSurfaceTypeTraverseCostDirection");
                if(methodEntry)
                {
                    decoder.decode_long("surfaceType");
                    decoder.decode_long("directionVectorX");
                    decoder.decode_long("directionVectorY");
                }
                else
                {
                }
                break;
            }
        case 14:
            {
                decoder.writeMethodName("setQueryBounds");
                if(methodEntry)
                {
                    decoder.decode_long("startX");
                    decoder.decode_long("startY");
                    decoder.decode_long("endX");
                    decoder.decode_long("endY");
                }
                else
                {
                }
                break;
            }
        case 15:
            {
                decoder.writeMethodName("clearQueryBounds");
                if(methodEntry)
                {
                }
                else
                {
                }
                break;
            }
        }
        break;
    case 5:
        decoder.writeInterfaceName("iObstacleSet");
        switch(methodIndex)
        {
        case 0:
            {
                decoder.writeMethodName("destroy");
                if(methodEntry)
                {
                }
                else
                {
                }
                break;
            }
        case 1:
            {
                decoder.writeMethodName("addAgent");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("agent");
                }
                else
                {
                }
                break;
            }
        case 2:
            {
                decoder.writeMethodName("removeAgent");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("agent");
                }
                else
                {
                }
                break;
            }
        case 3:
            {
                decoder.writeMethodName("getNumberOfAgents");
                if(methodEntry)
                {
                }
                else
                {
                    decoder.decode_long("returnValue");
                }
                break;
            }
        case 4:
            {
                decoder.writeMethodName("getAgent");
                if(methodEntry)
                {
                    decoder.decode_long("index");
                }
                else
                {
                    decoder.decodeAPIObject("returnValue");
                }
                break;
            }
        case 5:
            {
                decoder.writeMethodName("includes");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("agent");
                }
                else
                {
                    decoder.decode_bool("returnValue");
                }
                break;
            }
        case 6:
            {
                decoder.writeMethodName("size");
                if(methodEntry)
                {
                }
                else
                {
                    decoder.decode_long("returnValue");
                }
                break;
            }
        case 7:
            {
                decoder.writeMethodName("empty");
                if(methodEntry)
                {
                }
                else
                {
                    decoder.decode_bool("returnValue");
                }
                break;
            }
        case 8:
            {
                decoder.writeMethodName("updateCollisionPreprocessFor");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("shape");
                }
                else
                {
                }
                break;
            }
        case 9:
            {
                decoder.writeMethodName("updatePathfindingPreprocessFor");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("shape");
                }
                else
                {
                }
                break;
            }
        }
        break;
    case 6:
        decoder.writeInterfaceName("iPath");
        switch(methodIndex)
        {
        case 0:
            {
                decoder.writeMethodName("destroy");
                if(methodEntry)
                {
                }
                else
                {
                }
                break;
            }
        case 1:
            {
                decoder.writeMethodName("size");
                if(methodEntry)
                {
                }
                else
                {
                    decoder.decode_long("returnValue");
                }
                break;
            }
        case 2:
            {
                decoder.writeMethodName("position");
                if(methodEntry)
                {
                    decoder.decode_long("pointIndex");
                }
                else
                {
                    decoder.decode_cPosition("returnValue");
                }
                break;
            }
        case 3:
            {
                decoder.writeMethodName("connectionIndex");
                if(methodEntry)
                {
                    decoder.decode_long("segmentIndex");
                }
                else
                {
                    decoder.decode_long("returnValue");
                }
                break;
            }
        case 4:
            {
                decoder.writeMethodName("getPositionArray");
                if(methodEntry)
                {
                }
                else
                {
                }
                break;
            }
        case 5:
            {
                decoder.writeMethodName("getConnectionIndexArray");
                if(methodEntry)
                {
                }
                else
                {
                }
                break;
            }
        case 6:
            {
                decoder.writeMethodName("getLength");
                if(methodEntry)
                {
                }
                else
                {
                    decoder.decode_unsigned_long("returnValue");
                }
                break;
            }
        case 7:
            {
                decoder.writeMethodName("advanceAlong");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("shape");
                    decoder.decode_float("distance");
                    decoder.decodeAPIObject("context");
                }
                else
                {
                    decoder.decode_float("precisionX");
                    decoder.decode_float("precisionY");
                    decoder.decodeAPIObject("returnValue");
                }
                break;
            }
        case 8:
            {
                decoder.writeMethodName("renderOnGround");
                if(methodEntry)
                {
                    decoder.decode_long("originX");
                    decoder.decode_long("originY");
                }
                else
                {
                }
                break;
            }
        }
        break;
    case 7:
        decoder.writeInterfaceName("iCollisionInfo");
        switch(methodIndex)
        {
        case 0:
            {
                decoder.writeMethodName("destroy");
                if(methodEntry)
                {
                }
                else
                {
                }
                break;
            }
        case 1:
            {
                decoder.writeMethodName("getCollidingLine");
                if(methodEntry)
                {
                }
                else
                {
                    decoder.decodeCollidingLine();
                }
                break;
            }
        case 2:
            {
                decoder.writeMethodName("getCollidingAgent");
                if(methodEntry)
                {
                }
                else
                {
                    decoder.decodeAPIObject("returnValue");
                }
                break;
            }
        }
        break;
    case 8:
        decoder.writeInterfaceName("iTerrainCallBack");
        switch(methodIndex)
        {
        case 0:
            {
                decoder.writeMethodName("getHeightAt");
                if(methodEntry)
                {
                    decoder.decode_long("x");
                    decoder.decode_long("y");
                }
                else
                {
                    decoder.decode_float("returnValue");
                }
                break;
            }
        case 1:
            {
                decoder.writeMethodName("getHeightAtWithPrecision");
                if(methodEntry)
                {
                    decoder.decode_long("x");
                    decoder.decode_long("y");
                    decoder.decode_float("precisionX");
                    decoder.decode_float("precisionY");
                }
                else
                {
                    decoder.decode_float("returnValue");
                }
                break;
            }
        }
        break;
    case 9:
        decoder.writeInterfaceName("iQueryCallBack");
        switch(methodIndex)
        {
        case 0:
            {
                decoder.writeMethodName("desiredCallBackFrequency");
                if(methodEntry)
                {
                }
                else
                {
                    decoder.decode_long("returnValue");
                }
                break;
            }
        case 1:
            {
                decoder.writeMethodName("abort");
                if(methodEntry)
                {
                }
                else
                {
                    decoder.decode_bool("returnValue");
                }
                break;
            }
        }
        break;
    case 10:
        decoder.writeInterfaceName("iContentChunk");
        switch(methodIndex)
        {
        case 0:
            {
                decoder.writeMethodName("destroy");
                if(methodEntry)
                {
                }
                else
                {
                }
                break;
            }
        case 1:
            {
                decoder.writeMethodName("preValidate");
                if(methodEntry)
                {
                    decoder.decode_long("maximumScale");
                    decoder.decode_long("translationRange");
                }
                else
                {
                    decoder.decode_bool("returnValue");
                }
                break;
            }
        case 2:
            {
                decoder.writeMethodName("save");
                if(methodEntry)
                {
                }
                else
                {
                }
                break;
            }
        case 3:
            {
                decoder.writeMethodName("instantiate");
                if(methodEntry)
                {
                    decoder.decode_long("rotation");
                    decoder.decode_long("scale");
                    decoder.decode_long("translationX");
                    decoder.decode_long("translationY");
                    decoder.decode_float("translationZ");
                }
                else
                {
                }
                break;
            }
        case 4:
            {
                decoder.writeMethodName("instantiate_FloatRotateAndScale");
                if(methodEntry)
                {
                    decoder.decode_float("rotation");
                    decoder.decode_float("scale");
                    decoder.decode_long("translationX");
                    decoder.decode_long("translationY");
                    decoder.decode_float("translationZ");
                }
                else
                {
                }
                break;
            }
        case 5:
            {
                decoder.writeMethodName("deleteAllInstances");
                if(methodEntry)
                {
                }
                else
                {
                }
                break;
            }
        case 6:
            {
                decoder.writeMethodName("addAnchorsAndShapes");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("mesh");
                    decoder.decode_long("rotation");
                    decoder.decode_long("scale");
                    decoder.decode_long("translationX");
                    decoder.decode_long("translationY");
                    decoder.decode_float("translationZ");
                    decoder.decode_const_char_star("idPrefix");
                }
                else
                {
                }
                break;
            }
        case 7:
            {
                decoder.writeMethodName("addAnchorsAndShapes_FloatRotateAndScale");
                if(methodEntry)
                {
                    decoder.decodeAPIObject("mesh");
                    decoder.decode_float("rotation");
                    decoder.decode_float("scale");
                    decoder.decode_long("translationX");
                    decoder.decode_long("translationY");
                    decoder.decode_float("translationZ");
                    decoder.decode_const_char_star("idPrefix");
                }
                else
                {
                }
                break;
            }
        case 8:
            {
                decoder.writeMethodName("hasGroundComponent");
                if(methodEntry)
                {
                }
                else
                {
                    decoder.decode_bool("returnValue");
                }
                break;
            }
        case 9:
            {
                decoder.writeMethodName("hasAnchorsAndShapesComponent");
                if(methodEntry)
                {
                }
                else
                {
                    decoder.decode_bool("returnValue");
                }
                break;
            }
        case 10:
            {
                decoder.writeMethodName("instantiateAnchorsAndShapes");
                if(methodEntry)
                {
                    decoder.decode_long("rotation");
                    decoder.decode_long("scale");
                    decoder.decode_long("translationX");
                    decoder.decode_long("translationY");
                    decoder.decode_float("translationZ");
                }
                else
                {
                }
                break;
            }
        case 11:
            {
                decoder.writeMethodName("instantiateAnchorsAndShapes_FloatRotateAndScale");
                if(methodEntry)
                {
                    decoder.decode_float("rotation");
                    decoder.decode_float("scale");
                    decoder.decode_long("translationX");
                    decoder.decode_long("translationY");
                    decoder.decode_float("translationZ");
                }
                else
                {
                }
                break;
            }
        }
        break;
    }
}
